]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: Make sure to disconnect open-state-changed when the menu item dies
authorJasper St. Pierre <jstpierre@mecheye.net>
Tue, 6 Aug 2013 14:30:18 +0000 (10:30 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Tue, 6 Aug 2013 14:36:36 +0000 (10:36 -0400)
js/ui/popupMenu.js

index 57d9b49e2d92cc78664dafdafca2328d44abdd64..fce1d2fd717e39343ea8db0c92a4855e69038acc 100644 (file)
@@ -872,7 +872,11 @@ const PopupMenuBase = new Lang.Class({
             // separator's adjacent siblings change visibility or position.
             // open-state-changed isn't exactly that, but doing it in more
             // precise ways would require a lot more bookkeeping.
-            this.connect('open-state-changed', Lang.bind(this, function() { this._updateSeparatorVisibility(menuItem); }));
+            let openStateChangeId = this.connect('open-state-changed', Lang.bind(this, function() { this._updateSeparatorVisibility(menuItem); }));
+            let destroyId = menuItem.connect('destroy', Lang.bind(this, function() {
+                this.disconnect(openStateChangeId);
+                menuItem.disconnect(destroyId);
+            }));
         } else if (menuItem instanceof PopupBaseMenuItem)
             this._connectItemSignals(menuItem);
         else